Python双重定积分 用python求二重积分 您所在的位置:网站首页 python 双重积分 Python双重定积分 用python求二重积分

Python双重定积分 用python求二重积分

#Python双重定积分 用python求二重积分| 来源: 网络整理| 查看: 265

目录

前言假如你是大学生(一)符号表达式函数求极限泰勒展开函数求导求不定积分求定积分前言

上一篇实际上是一个小插曲,向大家介绍并展示了一段简短的python小程序在实现

文件批量处理

方面的强大功用!

接着上上一篇,今天我们继续来看Matlab常用指令之假如你是大学生系列一(高等数学上册)。

Python双重定积分 用python求二重积分_定积分

假如你是大学生(一)

前面两篇我们介绍的小学生和中学生系列的Matlab指令其实是非常初级的,甚至可以说,Matlab对于小学生和中学生来说只能算是一个高级的计算器。而其真正功能之强大,指令之丰富,体现在大学生系列。(Matlab在大学各种数学类课程、物理化学类课程、工程类课程、经济金融类等课程中都具有重要作用!)下面我们介绍一些及其常用的指令和用法。

符号表达式

之前已经介绍过,利用符号表达式可以定义一个函数表达式,所有的符号表达式定义都从syms指令开始,比如你的表达式包含x,y两个变量,那么你要首先定义两个符号变量:

syms x y

紧接着就可以写出你的符号表达式,例如想画一个双曲面的三维图,

f=x^2-y^2; fsurf(f)

立刻得到

Python双重定积分 用python求二重积分_matlab diff函数_02

其中fsurf指令可以快速绘制符号表达式的三维曲面图,你只要指定函数表达式,调用该函数就可以很快绘制曲面图,不需要指定任何数据信息。这和之前介绍过的快速绘制符号表达式的二维曲线图的指令fplot用法类似。(以后我们专门讲绘图指令时会再提。)

我们可以利用符号表达式来进行简单的公式推演,例如

syms x y f1=x-y; f2=x+y; f1^3*f2^3 expand(ans)

得到

Python双重定积分 用python求二重积分_不定积分_03

其中expand指令是把乘积结果展开。

我们也可以对符号表达式进行化简,例如

syms x y f=(x^3+y^3)/(x+y) simplify(f)

得到

Python双重定积分 用python求二重积分_符号表_04

image-20201219185613535

其中simplify指令是对结果进行化简。

函数求极限

微积分中求极限是最基本的操作。在matlab中求极限的指令为limit(f,var,a),即求

的值。例如,我们求下面这个常见的极限

syms x f=sin(x)/x; limit(f,x,0)

得到结果

Python双重定积分 用python求二重积分_matlab diff函数_05

完全正确!对于高等数学中所有的求极限题目都可以一网打尽!

泰勒展开

Matlab中求一个函数f的某个自变量x某点x0处截断的泰勒展开利用指令taylor(f,x,x0),其中x0若是缺失则默认在0处展开,例如求函数在0处的前几阶泰勒展开:

syms x f=tan(x); taylor(f,x)

Python双重定积分 用python求二重积分_定积分_06

(若没有指定展开到多少阶,默认最高只展开到6阶)我们可以指定展开到n阶,利用taylor(f,x,x0,'order',n).例如展开到13阶

taylor(f,x,'order',13)

得到

Python双重定积分 用python求二重积分_不定积分_07

我们也可以对二元函数进行泰勒展开(这是高等数学下册所学,不要求掌握的内容),例如求函数的前13阶展开:

syms x y f=tan(x*y); taylor(f,[x,y],'order',13)

得到

Python双重定积分 用python求二重积分_符号表_08

有了这个工具,你还说不会泰勒展开吗?复杂函数的泰勒展开你还需要手算吗?

Python双重定积分 用python求二重积分_符号表_09

函数求导

微积分中求导是第二基本操作。在matlab中求导的指令为diff(f,var,n),即对函数f的某个变量var求n阶导数。例如,我们求函数

的一阶导数,有

syms x f=sin(x)/x; df1=diff(f,x)

得到

Python双重定积分 用python求二重积分_定积分_10

对其求2阶导,只要指定一个阶数2

df2=diff(f,x,2) simplify(df2)

立刻得到

Python双重定积分 用python求二重积分_matlab diff函数_11

其中我再次利用了simplify函数进行化简!

我们也可以求偏导数,例如对如下函数求x偏导

syms x y z F=x^2+y^2+z*sin(x*y); dFx=diff(F,x)

即指定求导变量为x即可,得到

Python双重定积分 用python求二重积分_不定积分_12

求不定积分

微积分中求积分是第三基本操作。在matlab中求不定积分的指令为int(f,var),即对函数f的某个变量var求积分。例如,我们求积分

有:

syms x f=x*exp(x) J=int(f)

得到

Python双重定积分 用python求二重积分_matlab diff函数_13

我们可以求多元函数关于某一变量的积分(其他的变量当成常数对待),例如求

有:

syms x y f=x*exp(x*y) J=int(f,y)

得到

Python双重定积分 用python求二重积分_定积分_14

求定积分

定积分就是在不定积分基础上加上积分上下限,有多种方法。

方法一,符号表达式利用int(f,x0,x1)求函数f在x0到x1区间的积分。例如,求积分(还记得高等数学教材中是如何求此积分的吗?上册教材利用“夹逼定理”,即先求圆域积分再求正方形域积分,最后取极限;下册是利用二元函数极坐标系求积分,最后取极限)在matlab中只需要两三行程序:syms x f=exp(-x^2); int(f,0,inf)

得到

方法二,匿名函数(前面说过匿名函数怎么定义)情况下利用integral(f,x0,x1)求函数f在x0到x1区间的积分。例如,依然求上面的积分,则有f=@(x)exp(-x.^2); integral(f,0,inf)

得到

注意这里面得到的是数值结果(除了符号表达式下得到的是精确的解析解外,其他情况下都是数值解!)

integral指令求一元函数的定积分可以说是非常强大!任何复杂的一元函数都可以利用该指令求出数值积分!后面我们将会讲到对应的二重积分和三重积分求积指令分别为integral2和integral3.

方法三,各种数值积分。例如quad(f,a,b)利用复化辛普森求积算法计算积分(精度比较高),trapz(x,y)利用梯形公式计算积分(精度最低)。例如,依然计算上面的积分,利用quad函数有f=@(x)exp(-x.^2); quad(f,0,1000)

(注意quad中的上下限不能出现无穷符号inf,所以如果你的求积区间存在无穷大,要使用quad指令,可以把无穷大用一个相对较大的数值取代,例如这里我把无穷大取代为1000)得到

和integral的结果一致。(有人可能会问把无穷替换为一个相对较大的数,积分出来结果能不能反映真实值?很显然,如果一个函数在0到无穷大的区间内积分收敛,即积分结果是一个定值,那么你取0到1000和0到10000积分得到的结果应该很接近,如果说你取了两种相对较大的区间,发现积分结果差别比较大,可能存在两种原因,第一,被积函数在无穷范围内积分不收敛!第二,你取的“相对较大”的数还不够大!)

我们再利用trapz函数来求此积分,有

x=0:1000; f=exp(-x.^2); trapz(x,f)

(先把0到1000离散成很多个点x,显然我也不可能取0到无穷大的离散点,所以就取一个相对较大的数1000。再计算每个离散点处被积函数的值f.然后调用trapz函数计算积分)得到

和上面的结果有些许差别。(因为精度较低)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有